<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    
<!-- 
    前端模块化
    模块，一个js文件就是一个模块
    模块的好处：作用域独立，方便根据业务将一个复杂的程序拆分为多个独立的小程序，提高复用性，方便后期维护，方便团队协作

    JavaScript在ES6之前，一直没有任何模块相关的规范
    (function (){
        // 模拟一个模块1
    })();
    (function (){
        // 模拟一个模块2
    })();

    在开发社区产生了一些民间的模块化规范
    AMD -> Async... Module Definition 异步模块定义
    在 require.js 推广过程中推出的一种前端模块化规范
    require.js轻量化的模块载入框架（进口）
    AMD推崇依赖前置，提前执行
    
    CMD -> Common Module Definition 通用模块定义
    在 sea.js 推广过程中推出的一种前端模块化规范
    sea.js轻量化的模块载入框架（国产）
    CMD推荐依赖就近，延迟执行

    前端的模块规范，异步加载执行

    Commonjs模块化规范
    服务端使用，同步加载执行

    ES6在语言层面推出了ES模块化规范（ES module）
    ES模块可以在前端和后端使用
 -->

</body>
</html>